package com.quicklife.action.web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.sf.json.JSONObject;

import com.quicklife.service.impl.LoginServiceImpl;
import com.quicklife.service.inter.LoginService;
import com.quicklife.util.JsonUtil;
import com.quicklife.util.StringUtil;

/**
 * 登录验证
 * 
 * @author HackerD
 *
 */
public class WebLoginAction extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public WebLoginAction() {
		super();
	}

	/**
	 * The doGet method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doPost(request, response);
	}

	/**
	 * The doPost method of the servlet. <br>
	 * 
	 * This method is called when a form has its tag value method equals to
	 * post.
	 * 
	 * @param request
	 *            the request send by the client to the server
	 * @param response
	 *            the response send by the server to the client
	 * @throws ServletException
	 *             if an error occurred
	 * @throws IOException
	 *             if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		PrintWriter out = response.getWriter();
		
		String rtinfos = "";
		JSONObject rtJSON = null;
		JSONObject userInfo = null;
		
		// 获得客户端请求参数
		String actionFlag=request.getParameter("actionflag");
		String rqInfos=request.getParameter("rqinfos");
		String validateCode = request.getParameter("validate");
		
		//执行验证
		LoginService ls=new LoginServiceImpl();
		if(actionFlag.equalsIgnoreCase("web") && validateCode != null){
			// 验证码验证
			if (validateCode.equalsIgnoreCase((String)request.getSession().getAttribute("validateCode"))) {
				rtinfos=ls.webLoginCheck(rqInfos);
				rtJSON = JSONObject.fromObject(rtinfos);
				if (rtJSON.getString("result").equals(StringUtil.RESULT_CODE_OK)) {
					userInfo = rtJSON.getJSONArray("rtinfos").getJSONObject(0);
					setAccountInfo(userInfo, request);
					if (userInfo.getInt("roleid") == 0) {
						rtinfos = JsonUtil.createRtJsonStr(StringUtil.RESULT_CODE_OK, "admin/main.jsp");
					} else {
						rtinfos = JsonUtil.createRtJsonStr(StringUtil.RESULT_CODE_OK, "manage/main.jsp");
					}
				}
			} else {
				rtinfos=JsonUtil.createRtJsonStr(StringUtil.RESULT_CODE_FAIL, "验证码错误");
			}
		}
		
		//返回结果
		out.print(rtinfos);

		out.flush();
		out.close();
	}
	
	/**
	 * 把账户的基本信息保存到Session
	 * @param infos
	 */
	protected void setAccountInfo(JSONObject infos, HttpServletRequest request) {
		HttpSession session = request.getSession();
		session.setAttribute("roleid", infos.getInt("roleid"));
		session.setAttribute("id", infos.getInt("id"));
		session.setAttribute("name", infos.getString("name"));
		session.setAttribute("logo", infos.getString("logo"));
	}

}
